<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // Promise的链式操作

    var p = new Promise(function(resolve,reject){
        setTimeout(()=>{
            resolve(1);
        },2000)
    })

    // p.then(function(arg){
    //     console.log("fulfilled",arg);
    // }).catch(err=>{
    //     console.log("rejected",err);
    // })

    // then() 方法中回调函数的返回值是非Promise对象  => 后面的then()方法中回调函数可以接收前面回调函数返回的结果
    // p.then(function(arg){ // 1
    //     console.log("fulfilled",arg);
    //     return 2;
    // }).then(function(arg){ // 2
    //     console.log("fulfilled",arg);
    //     return 3;
    // }).then(function(arg){ // 3
    //     console.log("fulfilled",arg);
    // }).catch(err=>{
    //     console.log("rejected",err);
    // })

     // then() 方法中回调函数的返回值是非Promise对象  =>

    p.then(function(arg){ // 1
        console.log("fulfilled",arg);

        var p1 = new Promise(function(resolve,reject){
            setTimeout(()=>{
                reject(2);
            },2000)
        })
        return p1; // {<pending>:undefiend}  2s后变为 {<fulfilled>:2}
    }).then(function(arg){ // 2
        console.log("fulfilled",arg);
        var p2 = new Promise(function(resolve,reject){
            setTimeout(()=>{
                resolve(3);
            },2000)
        })
        return p2; // {<pending>:undefiend}  2s后变为 {<fulfilled>:3}
    }).then(function(arg){ // 3
        console.log("fulfilled",arg);
    }).catch(err=>{
        console.log("rejected",err);
    })






</script>
</html>